package studio.xiaoyun.web;

import java.util.Arrays;
import java.util.List;
import java.util.Map;

import org.springframework.web.servlet.ModelAndView;

import studio.xiaoyun.web.resource.Resource;

/**
 * Rest控制器的返回值都应该用这个类
 * @author 岳正灵
 * @version 1.0.0
 *
 */
public class RestResult extends ModelAndView {
	public static final String KEY_TOTAL = "_total";
	public static final String KEY_ROWS = "_rows";

	/**
	 * 构造函数
	 * @param total 数量
	 * @param row 一行数据，可以为null
	 */
	public RestResult(long total, Resource row) {
		if (total < 0) {
			throw new RuntimeException("total参数不能小于0");
		}
		this.getModel().put(KEY_TOTAL, total);
		if(row != null){
			this.getModel().put(KEY_ROWS, Arrays.asList(row));
		}
	}

	/**
	 * 构造函数
	 * @param total 数量
	 * @param rows 多行数据，可以为null
	 */
	@SuppressWarnings("rawtypes")
	public RestResult(long total, List rows) {
		if (total < 0) {
			throw new RuntimeException("total参数不能小于0");
		}
		this.getModel().put(KEY_TOTAL, total);
		if(rows != null){
			this.getModel().put(KEY_ROWS, rows);
		}
	}

	/**
	 * 构造函数
	 * @param total 数量
	 * @param row 一行数据，可以为null
	 */
	@SuppressWarnings("rawtypes")
	public RestResult(long total, Map row) {
		if (total < 0) {
			throw new RuntimeException("total参数不能小于0");
		}
		this.getModel().put(KEY_TOTAL, total);
		if(row != null){
			this.getModel().put(KEY_ROWS, Arrays.asList(row));
		}
	}
	
}
